import request from "@/utils/request";

// const USER_BASE_URL = "/api/v1/users";
const USER_BASE_URL = "/core/tStockWarehouse";

const wareArchivesApi = {
  /**
   * 获取当前登录用户信息
   *
   * @returns 登录用户昵称、头像信息，包括角色和权限
   */
  getInfo() {
    return request<any, UserInfo>({
      url: `${USER_BASE_URL}/me`,
      method: "get",
    });
  },

  /**
   * 获取用户分页列表
   *
   * @param queryParams 查询参数
   */
  getPage(queryParams: wareArchivesPageQuery) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));
    return request<any, PageResult<wareArchivesPageVO[]>>({
      url: `${USER_BASE_URL}/getTStockWarehouse?object=${query}`,
      method: "get",
    });
  },

  /**
   * 获取rowList
   *
   * @param queryParams 查询参数
   */
  getRowPage(queryParams: wareArchivesRowPageQuery) {
    return request<any, PageResult<rowWareArchivesVO[]>>({
      url: `/core/tStockWarehouse/getStockLocationByCode?warehouse=${queryParams.warehouse}&code=${queryParams.code}`,
      method: "get",
    });
  },

  /**
   * 获取用户表单详情
   *
   * @param userId 用户ID
   * @returns 用户表单详情
   */
  getFormData(userId: number) {
    return request<any, UserForm>({
      url: `${USER_BASE_URL}/${userId}/form`,
      method: "get",
    });
  },

  /**
   * 添加用户
   *
   * @param data 用户表单数据
   */
  add(data: UserForm) {
    return request({
      url: `${USER_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 修改用户
   *
   * @param id 用户ID
   * @param data 用户表单数据
   */
  update(id: number, data: UserForm) {
    return request({
      url: `${USER_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 修改用户密码
   *
   * @param id 用户ID
   * @param password 新密码
   */
  resetPassword(id: number, password: string) {
    return request({
      url: `${USER_BASE_URL}/${id}/password/reset`,
      method: "put",
      params: { password: password },
    });
  },

  /**
   * 批量删除用户，多个以英文逗号(,)分割
   *
   * @param ids 用户ID字符串，多个以英文逗号(,)分割
   */
  deleteByIds(ids: string) {
    return request({
      url: `${USER_BASE_URL}/${ids}`,
      method: "delete",
    });
  },

  /** 下载用户导入模板 */
  downloadTemplate() {
    return request({
      url: `${USER_BASE_URL}/template`,
      method: "get",
      responseType: "blob",
    });
  },

  /**
   * 导出用户
   *
   * @param queryParams 查询参数
   */
  export(queryParams: wareArchivesPageQuery) {
    return request({
      url: `${USER_BASE_URL}/export`,
      method: "get",
      params: queryParams,
      responseType: "blob",
    });
  },

  /**
   * 导入用户
   *
   * @param deptId 部门ID
   * @param file 导入文件
   */
  import(deptId: number, file: File) {
    const formData = new FormData();
    formData.append("file", file);
    return request({
      url: `${USER_BASE_URL}/import`,
      method: "post",
      params: { deptId: deptId },
      data: formData,
      headers: {
        "Content-Type": "multipart/form-data",
      },
    });
  },

  /** 获取个人中心用户信息 */
  getProfile() {
    return request<any, UserProfileVO>({
      url: `${USER_BASE_URL}/profile`,
      method: "get",
    });
  },

  /** 修改个人中心用户信息 */
  updateProfile(data: UserProfileForm) {
    return request({
      url: `${USER_BASE_URL}/profile`,
      method: "put",
      data: data,
    });
  },

  /** 修改个人中心用户密码 */
  changePassword(data: PasswordChangeForm) {
    return request({
      url: `${USER_BASE_URL}/password`,
      method: "put",
      data: data,
    });
  },

  /**
   *   发送手机/邮箱验证码
   *
   * @param contact 联系方式  手机号/邮箱
   * @param contactType 联系方式类型 MOBILE:手机;EMAIL:邮箱
   */
  sendVerificationCode(contact: string, contactType: string) {
    return request({
      url: `${USER_BASE_URL}/send-verification-code`,
      method: "get",
      params: { contact: contact, contactType: contactType },
    });
  },

  /** 绑定个人中心用户手机 */
  bindMobile(data: MobileBindingForm) {
    return request({
      url: `${USER_BASE_URL}/mobile`,
      method: "put",
      data: data,
    });
  },

  /** 绑定个人中心用户邮箱 */
  bindEmail(data: EmailBindingForm) {
    return request({
      url: `${USER_BASE_URL}/email`,
      method: "put",
      data: data,
    });
  },

  /**
   *  获取用户下拉列表
   */
  getOptions() {
    return request<any, OptionType[]>({
      url: `${USER_BASE_URL}/options`,
      method: "get",
    });
  },

  /**
   * 新增仓库
   *
   * @param data 用户表单数据
   */
  addStore(data: any) {
    return request({
      url: `${USER_BASE_URL}/saveOrUpdateTStockWarehouse`,
      method: "post",
      data: data,
    });
  },

  /**
   * 新增储位
   *
   * @param data 用户表单数据
   */
  addLocation(data: any) {
    return request({
      url: `/core/tStockWarehouse/saveOrUpdateStockLocation`,
      method: "post",
      data: data,
    });
  },

  /**
   * 修改储位
   *
   * @param data 用户表单数据
   */
  editLocation(data: any) {
    return request({
      url: `/core/tStockWarehouse/saveOrUpdateStockLocation`,
      method: "post",
      data: data,
    });
  },

  /**
   * 删除储位
   *
   * @param data 用户表单数据
   */
  delLocation(data: any) {
    return request({
      url: `/core/tStockWarehouse/delTStockLocation`,
      method: "post",
      data: data,
    });
  },

  /**
   * 修改仓库
   *
   * @param data 用户表单数据
   */
  editStore(data: any) {
    return request({
      url: `/core/tStockWarehouse/saveOrUpdateTStockWarehouse`,
      method: "post",
      data: data,
    });
  },

  /**
   * 删除仓库
   *
   * @param data 用户表单数据
   */
  delStore(data: any) {
    return request({
      url: `${USER_BASE_URL}/delTStockWarehouse`,
      method: "post",
      data: data,
      headers: {
        "Content-Type": "application/json;charset=utf-8",
      },
    });
  },
};

export default wareArchivesApi;

/** 登录用户信息 */
export interface UserInfo {
  /** 用户ID */
  userId?: number;

  /** 用户名 */
  username?: string;

  /** 昵称 */
  nickname?: string;

  /** 头像URL */
  avatar?: string;

  /** 角色 */
  roles: string[];

  /** 权限 */
  perms: string[];
}

/**
 * 用户分页查询对象
 */
export interface wareArchivesPageQuery extends PageQuery {
  /** 仓库名称 */
  name?: string;

  /** 地址 */
  address?: string;

  /** 是否为默认仓库，可选值为 '1'（是）或 '0'（否） */
  isDefault?: number;
  /** 仓库编号 */
  code?: string;
}

export interface wareArchivesRowPageQuery {
  /** 储位编号 */
  code?: string;
  /** 仓库编号 */
  warehouse?: string;
}
// 仓库Form
export interface StashForm {
  code?: string; //
  id?: number; //
  name?: string; //仓库名称
  warehouseCode?: string; //仓库类型
  category?: number; //仓库温度
  otherName?: string; //别名
  customer?: string; //客户编号
  addressName?: string; // 客户地址名称
  address?: string; // 地址
  contactPerson?: string; // 联系人
  contactTel?: string; // 联系人电话
  contactFax?: string; // 联系人传真
  contactEmail?: string; // 联系人邮箱
  isDefault?: number; // 默认仓库（'0'：否 或 '1'：是）
}
export interface StorageLocationForm {
  code?: string; //
  id?: number; //
  locRow?: string; //位置--行
  locColumn?: string; //位置--列
  locFloor?: string; //位置--层
  distance?: number; //距离门口优先级 越大离门口越近
  capacity?: number; // 储位容量
  category?: string; // 存储品类（框个数）
  warehouse?: string; //仓库编号
}
/** 订单分页对象 */
export interface wareArchivesPageVO {
  /** 仓库编号 */
  code?: string;
  /** 仓库名称 */
  name?: string;
  /** 别名 */
  otherName?: string;
  /** 客户编号 */
  customer?: string;
  /** 客户地址名称 */
  addressName?: string;
  /** 地址 */
  address?: string;
  /** 联系人 */
  contactPerson?: string;
  /** 联系人电话 */
  contactTel?: string;
  /** 联系人传真 */
  contactFax?: string;
  /** 联系人邮箱 */
  contactEmail?: string;
  /** 是否为默认仓库的状态（0:未提交, 1:待审核, 2:审核拒绝, 3:已审核, 4:计划完成, 5:生产完成, 6:交付完成） */
  status?: string;
  /** 是否为默认仓库的显示文本（根据status动态显示） */
  isDefault?: number;
  category?: number;
}

export interface rowWareArchivesVO {
  /** 储位编号 */
  code?: string;
  /** 仓库编号 */
  warehouse?: string;
  /** 储位容量 */
  capacity?: string;
  /** 储位容量（框个数） */
  category?: string;
  /** 货物品类 */
  // addressName?: string;
}
/** 用户表单类型 */
export interface UserForm {
  /** 用户头像 */
  avatar?: string;
  /** 部门ID */
  deptId?: number;
  /** 邮箱 */
  email?: string;
  /** 性别 */
  gender?: number;
  /** 用户ID */
  id?: number;
  /** 手机号 */
  mobile?: string;
  /** 昵称 */
  nickname?: string;
  /** 角色ID集合 */
  roleIds?: number[];
  /** 用户状态(1:正常;0:禁用) */
  status?: number;
  /** 用户名 */
  username?: string;
}

/** 个人中心用户信息 */
export interface UserProfileVO {
  /** 用户ID */
  id?: number;

  /** 用户名 */
  username?: string;

  /** 昵称 */
  nickname?: string;

  /** 头像URL */
  avatar?: string;

  /** 性别 */
  gender?: number;

  /** 手机号 */
  mobile?: string;

  /** 邮箱 */
  email?: string;

  /** 部门名称 */
  deptName?: string;

  /** 角色名称，多个使用英文逗号(,)分割 */
  roleNames?: string;

  /** 创建时间 */
  createTime?: Date;
}

/** 个人中心用户信息表单 */
export interface UserProfileForm {
  /** 用户ID */
  id?: number;

  /** 用户名 */
  username?: string;

  /** 昵称 */
  nickname?: string;

  /** 头像URL */
  avatar?: string;

  /** 性别 */
  gender?: number;

  /** 手机号 */
  mobile?: string;

  /** 邮箱 */
  email?: string;
}

/** 修改密码表单 */
export interface PasswordChangeForm {
  /** 原密码 */
  oldPassword?: string;
  /** 新密码 */
  newPassword?: string;
  /** 确认新密码 */
  confirmPassword?: string;
}

/** 修改手机表单 */
export interface MobileBindingForm {
  /** 手机号 */
  mobile?: string;
  /** 验证码 */
  code?: string;
}

/** 修改邮箱表单 */
export interface EmailBindingForm {
  /** 邮箱 */
  email?: string;
  /** 验证码 */
  code?: string;
}
